package jwts

import (
	"github.com/dgrijalva/jwt-go/v4"
	"giv-vue-blog/global"
	"time"
)

// GenToken 创建token
func GenToken(user JwtPayLoad) (string, error) {
	var Mysecret = []byte(global.Config.Jwy.Secret) //存储 JWT 密钥
	claim := CustomClaims{                          //存储 JWT 载荷（Payload）  JWT 的过期时间和签发人
		user,
		jwt.StandardClaims{
			ExpiresAt: jwt.At(time.Now().Add(time.Hour * time.Duration(global.Config.Jwy.Expires))), //token默认2小时过期
			Issuer:    global.Config.Jwy.Issuer,                                                     //签发人
		},
	}
	token := jwt.NewWithClaims(jwt.SigningMethodHS256, claim) //创建一个未签名的 JWT Token 对象，这个对象包含了 JWT 载荷和签名算法，其中签名算法使用 HS256
	return token.SignedString(Mysecret)                       //调用 JWT Token 对象的 SignedString 方法，对 JWT Token 进行签名，并返回签名后的 JWT Token 字符串
}
